// DOM元素管理模块

/**
 * 获取所有需要的DOM元素
 * @returns {Object|null} 包含所有DOM元素的对象，如果关键元素缺失则返回null
 */
export function getDOMElements() {
    try {
        // 创建DOM元素对象
        const elements = {
            // 连接类型相关元素
            connectionTypeTabs: document.querySelectorAll('.connection-type-tab'),
            serverUrlInput: document.getElementById('server-url'),

            // 连接控制按钮
            connectBtn: document.getElementById('connect-btn'),
            disconnectBtn: document.getElementById('disconnect-btn'),
            terminateBtn: document.getElementById('terminate-btn'),

            // 状态显示元素
            connectionStatusSpan: document.getElementById('connection-status-span'),
            serverInfoSpan: document.getElementById('server-info-span'),
            sessionIdSpan: document.getElementById('session-id-span'),

            // 请求相关元素
            requestMethodSelect: document.getElementById('request-method'),
            requestParamsInput: document.getElementById('request-params'),
            sendRequestBtn: document.getElementById('send-request-btn'),
            requestResultTextarea: document.getElementById('request-result'),

            // 日志相关元素
            clearLogBtn: document.getElementById('clear-log-btn'),
            logContainer: document.getElementById('log-container'),

            // 客户端能力选择框
            capabilityCheckboxes: document.querySelectorAll('.capability-checkbox'),

            // 认证设置
            authCheckbox: document.getElementById('auth-enabled'),
            authTypeSelect: document.getElementById('auth-type'),
            oauth2TokenInput: document.getElementById('oauth2-token'),
            basicUsernameInput: document.getElementById('basic-username'),
            basicPasswordInput: document.getElementById('basic-password'),
            oauth2SettingsDiv: document.getElementById('oauth2-settings'),
            basicAuthSettingsDiv: document.getElementById('basic-auth-settings'),
            authDetailsDiv: document.getElementById('auth-details'),

            // 快速操作按钮
            quickActionButtons: document.querySelectorAll('.quick-action-btn')
        };
        
        // 检查是否存在任何DOM元素
        // 由于querySelectorAll总是返回NodeList（即使为空），我们只检查getElementById获取的元素
        const criticalElements = [
            elements.serverUrlInput,
            elements.connectBtn,
            elements.disconnectBtn
        ];
        
        // 检查是否所有关键元素都存在
        const allCriticalElementsExist = criticalElements.every(el => el !== null);
        
        if (!allCriticalElementsExist) {
            console.warn('警告：部分关键DOM元素缺失，应用可能无法正常运行');
        }
        
        return elements;
    } catch (error) {
        console.error('获取DOM元素时发生错误:', error);
        return null;
    }
}

/**
 * 获取当前选中的服务器URL
 * @param {string} currentConnectionType - 当前连接类型
 * @param {HTMLInputElement} serverUrlInput - 服务器URL输入框
 * @returns {string} 当前选中的服务器URL
 */
export function getCurrentServerUrl(currentConnectionType, serverUrlInput) {
    let baseUrl = serverUrlInput.value.trim();

    // 确保URL末尾没有斜杠
    if (baseUrl.endsWith('/')) {
        baseUrl = baseUrl.slice(0, -1);
    }

    // 根据连接类型添加相应的路径后缀
    switch (currentConnectionType) {
        case 'sse':
            return `${baseUrl}`;
        case 'streamable':
            return `${baseUrl}`;
        case 'websocket':
            // 对于WebSocket，需要将http(s)://替换为ws(s)://
            if (baseUrl.startsWith('http://')) {
                return baseUrl.replace('http://', 'ws://') ;
            } else if (baseUrl.startsWith('https://')) {
                return baseUrl.replace('https://', 'wss://');
            }
            return `${baseUrl}`;
        default:
            return baseUrl;
    }
}
